package com.sczmgk.hotline_pzh.view;

import android.content.Context;
import android.content.res.TypedArray;
import android.text.InputType;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.sczmgk.hotline_pzh.R;
import com.sczmgk.hotline_pzh.utils.Tools;

/**
 * Created by Administrator on 2016/12/12 0012.
 */

public class RegistItemView extends LinearLayout {

    /*文本描述*/
    private TextView mTvDes;

    /*输入框控件*/
    private CustomDeleteInfoView mInputContent;

    /*获取验证码*/
    private Button mBtnGetKey;

    /*是否显示密码的控件*/
    private CheckBox mCbShowPwd;
    private ImageView mIvDes;

    public RegistItemView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs);
    }

    /**
     * 初始化
     */
    private void init(Context context, AttributeSet attrs) {

        //填充布局
        View registView = View.inflate(context, R.layout.item_regist_view, null);

        //设置布局的属性
        LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        registView.setLayoutParams(params);

        //文本描述
        mTvDes = (TextView) registView.findViewById(R.id.tv_des);
        //输入框控件
        mInputContent = (CustomDeleteInfoView) registView.findViewById(R.id.cdi_input_content);
        //验证码按钮
        mBtnGetKey = (Button) registView.findViewById(R.id.btn_get_security_code);
        //是否显示密码的控件
        mCbShowPwd = (CheckBox) registView.findViewById(R.id.cb_show_password);

        RelativeLayout mRlDes = (RelativeLayout) registView.findViewById(R.id.rl_image_des);
        mIvDes = (ImageView) registView.findViewById(R.id.iv_image);

        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RegistItemView);
        //文本描述
        String textDes = typedArray.getString(R.styleable.RegistItemView_textItemDes);
        //输入框的hint
        String hintDes = typedArray.getString(R.styleable.RegistItemView_hintDes);
        //是否显示验证码按钮
        boolean isShowKey = typedArray.getBoolean(R.styleable.RegistItemView_isShowKey, false);
        //是否显示密码
        boolean isShowEyes = typedArray.getBoolean(R.styleable.RegistItemView_isShowEyes, false);
        //是否显示文本描述(如果显示,图片描述则不显示)
        boolean isTextDesVisiable = typedArray.getBoolean(R.styleable.RegistItemView_isTextDesVisiable, true);

        //设置描述的显示
        mTvDes.setVisibility(isTextDesVisiable ? View.VISIBLE : View.GONE);
        mRlDes.setVisibility(isTextDesVisiable ? View.GONE : View.VISIBLE);

        //设置文本描述和输入框hint
        if (!Tools.isEmpty(textDes)) {
            mTvDes.setText(textDes);
        }
        if (!Tools.isEmpty(hintDes)) {
            mInputContent.setHint(hintDes);
        }

        //设置是否显示验证码
        if (isShowKey) {
            mBtnGetKey.setVisibility(View.VISIBLE);
        } else {
            mBtnGetKey.setVisibility(View.GONE);
        }

        //设置是否显示密码
        if (isShowEyes) {
            mCbShowPwd.setVisibility(View.VISIBLE);
        } else {
            mCbShowPwd.setVisibility(View.GONE);
        }

        typedArray.recycle();

        //设置监听
        setListener();

        //将填充的布局添加到当前控件中
        addView(registView);
    }

    /**
     * 设置监听
     */
    private void setListener() {

        //显示密码
        mCbShowPwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                if (isChecked) {
                    //显示密码
                    mInputContent.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
                } else {
                    //隐藏密码
                    mInputContent.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                }
                //光标定在最后一位
                String password = mInputContent.getText();
                if (!TextUtils.isEmpty(password)) {
                    mInputContent.setSelection(password.length());
                }
            }
        });

    }

    /**
     * 设置文本框输入类型
     *
     * @param type
     */
    public void setInputType(int type) {
        mInputContent.setInputType(type);
    }

    /**
     * 设置获取验证码的点击事件
     */
    public void setOnGetKeyOnclick(OnClickListener listener) {
        mBtnGetKey.setOnClickListener(listener);
    }

    /**
     * 设置描述文本
     */
    public void setTextDes(String textDes) {
        mTvDes.setText(textDes);
    }

    /**
     * 设置描述文本
     */
    public void setTextDes(int textDes) {
        mTvDes.setText(textDes);
    }


    /**
     * 设置输入框文本
     */
    public void setText(String text) {
        mInputContent.setText(text);
    }

    /**
     * 设置输入框文本
     */
    public void setText(int text) {
        mInputContent.setText(text);
    }

    /**
     * 设置输入框hint文本
     */
    public void setHint(String hintDes) {
        mInputContent.setHint(hintDes);
    }

    /**
     * 设置描述文本
     */
    public void setHint(int hintDes) {
        mInputContent.setHint(hintDes);
    }

    /**
     * 获取输入的文本
     */
    public String getText() {
        return mInputContent.getText();
    }

    /**
     * 设置获取验证码按钮的显示
     */
    public void setGetKeyVisiable(int visiable) {
        mBtnGetKey.setVisibility(visiable);
    }

    /**
     * 设置获取验证码按钮的显示
     */
    public void setEyesVisiable(int visiable) {
        mCbShowPwd.setVisibility(visiable);
    }

    /**
     * 设置光标
     */
    public void setSelection(int length) {
        mInputContent.setSelection(length);
    }

    /**
     * 设置图片描述
     */
    public void setImageResource(int res){
        mIvDes.setImageResource(res);
    }

    /**
     * 取得获取验证码的
     * @return
     */
    public Button getVerifyButton (){
        return mBtnGetKey;
    }
}
